package main

import (
	"fmt"
	"strings"
)

func printUpperTriangle(n int) {
	// 计算最大数字的位数，用于对齐
	maxWidth := len(fmt.Sprintf("%d", n))

	for i := 1; i <= n; i++ {
		// 计算前导空格数量（每行减少maxWidth+1个空格）
		leadingSpaces := (n - i) * (maxWidth + 1)
		fmt.Print(strings.Repeat(" ", leadingSpaces))

		// 打印数字（从i递减到1）
		for j := i; j >= 1; j-- {
			fmt.Printf("%*d ", maxWidth, j)
		}
		fmt.Println()
	}
}

func main() {
	// 编写一个函数，接受一个参数n，n为正整数。要求数字必须对齐
	// 	上三角
	// 							1
	// 						  2 1
	// 						3 2 1
	// 					  4 3 2 1
	// 					5 4 3 2 1
	// 				  6 5 4 3 2 1
	// 				7 6 5 4 3 2 1
	// 			  8 7 6 5 4 3 2 1
	// 			9 8 7 6 5 4 3 2 1
	// 		 10 9 8 7 6 5 4 3 2 1
	// 	  11 10 9 8 7 6 5 4 3 2 1
	// 12 11 10 9 8 7 6 5 4 3 2 1
	printUpperTriangle(12)

}
